React Native 是一個臉書開發、建構在 React 之上的 JS 函式庫,最大的好處就是能用「類似網站開發的方式來製作 App 」。若你和我一樣是個網頁工程師,卻因故需要開發 App ,比起從頭學習 App 原生語法(別忘了 Android 和 iOS 使用的語言還不同喔), React Native 絕對會是更平易近人的選項。
React Native 會將我們所寫的 JS ,轉換成原生程式碼,並提供 iOS 與 Android 原生支援的 JavaScript 元件,讓我們能打造出和原生語言大同小異的 App。如同他們所主打的標語「 Learn once, write anywhere 」,只要學會了,就能一次完成雙平台 App 的開發與維護。
你可能會問,那有哪些 App 實際用了 React Native 來開發呢?根據 React Native 官網所寫,當然臉書本身的 App 就不用說了, Skype 、 Microsoft Teams 、 Discord 、 Pinterest 等都用了 React Native 來開發(截至 2023 年 9 月為止)。
剛接觸 React Native 時,可能會先被 Expo 和 React Native 的關係、差異,和要用哪個搞得暈頭轉向。
簡單來說, Expo 是一個開源框架。雖然 React Native 已經幫助網頁工程師能夠用更簡單的方式進入開發 App 的世界,但是依然有很多需要自己處理的,若使用 Expo ,他會直接幫你處理好,讓你少走一些泥巴路。
那到底該怎麼選擇呢?其實第一年寫 App 專案,我也是直接使用 Expo ,原因很現實,當時接手的半成品專案就是 Expo 。事實的確證明 Expo 比較好入門,直到後來因專案需求,才促使我們把專案從 Expo 轉換成純 React Native 。
而轉換過程又是一個潛藏的地雷。雖然 Expo 有提供 eject expo 這個指令,但因為 Expo 和直接使用純粹的 React Native ,在資料架構上還是有差異, Expo 的資料夾相對單純很多。轉換後除了需要再次學習那些額外多出來的知識點,若專案已經進行到一半,並且不幸暗藏一些問題,也會需要重新整合。
若單純以學習來說,我覺得直接學習 React Native ,其實也未嘗不可。這系列的文章將專注在 React Native 本身上,若對於 Expo 有興趣的讀者,推薦這系列教學給你:Expo --- 跨平台 App 開發從零到上架。
最後,想說明我做這個題目的原因。
在人力銀行的職缺中, React Native 工程師的職位其實不算少。不過中文教學卻蠻少的,資料零零散散,好不容易找到,結果內容這段跟下段一下子跳的太快。
在我剛接手 React Native 專案時,對於 React 、 React Native 的認識都是零。一開始因為沒有完整學習(也因為太龐大,不知道從何學起),卻又很著急想趕快把專案做起來,碰到一個東西做不出來只想趕快在網路上搜尋解法。偏偏有的人用 Expo 回答,有的人用純 React Native ;有的解答用 Functional Component 寫,有的又用 Class Component 寫。不只如此,這些解答為了快速說出重點,不會貼完整的段落。對於三腳貓的我來說非常困惑,也察覺到自己必須好好完整的學習,才不會連自己在寫什麼都不知道。
透過 Youtube 我找到一系列不錯的影片,跟隨他的建議先從 React 學起,專案部分則是逐步調整。慢慢的整個 App 不但順利完成,上架雙平台,專案也被整理得乾淨許多,目前已經發展到第二年。
不論你是突然被叫去寫 App 的網頁前端工程師,或是單純對 React Native 有興趣,都希望我能盡可能的幫助到你。另外不免俗還是要說,我會盡可能提供正確的資訊,但是如果文章裡頭真的有我個人對知識點理解錯誤,或是有更好的解法,甚至是沒講到重點的,都希望大家能不吝提出。